package com.jf.apply_car.bean;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * 申请信息表
 *
 * @TableName apply
 */
@Data
public class Apply implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键自增
     */
    private Integer applyId;
    /**
     * 申请人编号
     */
    private Integer applyUserinfoId;
    /**
     * 申请时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date applyTime;
    /**
     * 申请车辆编号
     */
    private Integer applyCarId;
    /**
     * 申请司机编号
     */
    private Integer applyDriverId;
    /**
     * 申请类型1自家2代驾
     */
    private Integer applyType;
    /**
     * 申请用车开始时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date applyStartTime;
    /**
     * 申请用车结束时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date applyEndTime;
    /**
     * 申请用车原因
     */
    private String applyReason;
    /**
     * 审核的负责人编号
     */
    private Integer examDepartmentUserinfoId;
    /**
     * 负责人审核时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date examDepartmentTime;
    /**
     * 负责人审核意见
     */
    private String examDepartmentContent;
    /**
     * 审核的管理员编号
     */
    private Integer examAdminUserinfoId;
    /**
     * 管理员审核时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date examAdminTime;
    /**
     * 管理员审核意见
     */
    private String examAdminContent;
    /**
     * 还车人编号
     */
    private Integer returnUserinfoId;
    /**
     * 还车时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date returnTime;
    /**
     * 实际使用车辆编号
     */
    private Integer carId;
    /**
     * 实际司机编号
     */
    private Integer driverId;
    /**
     * 申请状态：
     * 1已申请
     * 2部门审核通过
     * 3部门审核拒绝
     * 4管理员审核通过
     * 5管理员审核拒绝
     * 6已换车
     * 7异常
     */
    private Integer applyStatus;


    private Userinfo applyUserinfo;
    private Car applyCar;
    private Userinfo applyDriver;

    private Userinfo examDepartment;
    private Userinfo examAdmin;

    private Userinfo returnUserinfo;

    private Car car;
    private Userinfo driver;

    /**
     * 筛选时使用的时间范围
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date searchStartTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date searchEndTime;

    /**
     * 负责人查询全部时使用的参数
     */
    private Integer departmentId;
}
